package com.cskaoyan.javase.array._3exception._2null;

/**
 * @description:
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 对于引用数据类型而言,存在空常量null,也就是说引用可以指向null
 * 引用指向null可以看成该引用指向了"虚无"(反正不指向对象)
 * 引用没有指向对象的时候,如果想要通过引用访问对象,是访问不到的.会引发程序的错误
 * JVM就会抛出空指针异常,然后终止程序执行
 * NullPointerException: 空指针异常
 * Java是不存指针的,引用可以看成是弱化的指针,不灵活的指针,安全的指针
 *
 * Java当中基本数据类型四类八种很少,不能满足程序员的需求,所以我们会经常和引用数据类型打交道,一旦使用引用数据类型,就伴随着null的概念,也就伴随着空指针异常
 * 空指针异常是开发中最常见,最容易写出来异常
 * 我们要在开发中,小心谨慎,避免空指针异常
 *
 * 需要注意的是：
 * - 我们在开发时，要明确知道程序中的引用哪里会指向null，哪里完全不会指向null
 *   - 对于那些可能会指向null的引用，要在使用前慎重判断，判断不为null才能使用
 *   - 对于那些完全不可能等于null的引用，可以适当的不做判断
 *     - 一旦程序抛出空指针异常，要去排查为什么引用会等于null，然后修正程序
 *
 */
public class Demo {
    public static void main(String[] args) {
        /*int[] arr = null;
        //最常用的避免空指针的方式是: if判断
        if (arr != null){
            System.out.println(arr.length);
        }
        System.out.println("hello world!");*/

        //String s = null;
        //System.out.println(s.length());

        int[] arr = null;
        //Array access 'arr[0]' will produce 'NullPointerException'
        //System.out.println(arr[0]);

    }
}
